<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    年份：<input type="text" id="inp1">
    月份：<input type="text" id="inp2">
    日期：<input type="text" id="inp3">
    <input type="button" id="btn" value="天数">
    天数：<input type="text" id="inp4">
</body>
<script>
var yearinp=document.getElementById("inp1");
var monthinp=document.getElementById("inp2");
var dateinp=document.getElementById("inp3");
var dayinp=document.getElementById("inp4");
var btn=document.getElementById("btn");
console.log(yearinp,monthinp,dateinp,dayinp,btn);
yearinp.onclick=function (){
    yearinp.value=""
}
monthinp.onclick=function (){
    monthinp.value=""
}
dateinp.onclick=function (){
    dateinp.value=""
}
btn.onclick=function (){
var year=yearinp.value*1;
var month=monthinp.value*1;
var date=dateinp.value*1;
var day=dayinp.value;
// 判断年月日输入框是否合法，从年开始判断，年正确则往后判断月，月正确往后判断日，错误则提示不合法
if(year>=1000&&year<=4000&&year%1==0){
    var maxday;
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
            //  判断日期
            // if(date<=31&&date>=1&&date%1==0){
            //     dayinp.value="日期正确";
            // }
            // else{
            //     dayinp.value="日期错误";
            // }
            maxday=31;

    }
    else if(month==4||month==6||month==9||month==11){
           //  判断日期
        //    if(date<=30&&date>=1&&date%1==0){
        //         dayinp.value="日期正确";
        //     }
        //     else{
        //         dayinp.value="日期错误";
        //     }
            maxday=30
    }
    else if(month==2){
           // 判断日期
               //  判断平年还是闰年
               if((year%400)==0 ||(year%4==0&&year%100!=0)){
                    // if(date<=29&&date>=1&&date%1==0){
                    //     dayinp.value="日期正确";
                    // }
                    // else{
                    //     dayinp.value="日期错误";
                    // }
                    maxday=29;
                }
                else{
                    // 
                    maxday=28;
                }

    }
    else{day="月份错误"}
}
else{day="年份错误"}
// 日期判断优化
if(maxday!=undefined){
if(date<=maxday&&date>=1&&date%1==0){
    day="日期正确";
}
else{
    day="日期错误";
}
}
else{}

// 错误的代码
//    if(yearinp.value!=""){
//     if (year<1000||year>4000||year%1!=0){
//             yearinp.value="请输入正确的数"
//             year=NaN
//         }else{}
//     }
//     else{

//     }

//    if(monthinp.value!=""){
//    if (month<1||month>12||month%1!=0){
//         monthinp.value="请输入正确的数" 
//         month=NaN 
//     }
//     else{}
//     }
//     else{
//     }

//     if (date%1!=0&&date>=0&&date<=31){
//       if(month==4||month==6||month==9||month==11){
//           if(day<=30){
            
//           }
//           else{
//             dateinp.value="请输入正确的数";
//             date=NaN;
//           }
//       }
//       else if(month==2){
//             if((year%400)==0 ||(year%4==0&&year%100!=0)){
//                         if(day<=29){
//                         }
//                         else{
//                         dateinp.value="请输入正确的数";
//                         date=NaN;
//                         }
//             }
//             else{
//                         if(day<=28){
//                         }
//                         else{
//                         dateinp.value="请输入正确的数";
//                         date=NaN;
//                         }
//             }   
//       }
//       else{}
//     }
//     else{
//         dateinp.value="请输入正确的数";
//         date=NaN;
//     }

    // 判断天数
    var two=28;
    if((year%400)==0 ||(year%4==0&&year%100!=0)){
        two=29;
    }

    if(month==1){
        day=date;
    }
    else if(month==2){
        day=31+date;
    }
    else if(month==3){
        day=31+two+date;
    }
    else if(month==4){
        day=31+two+31+date;
    }
    else if(month==5){
        day=31+two+31+30+date;
    }
    else if(month==6){
        day=31+two+31+30+31+date;
    }
    else if(month==7){
        day=31+two+31+30+31+30+date;
    }
    else if(month==8){
        day=31+two+31+30+31+30+31+date;
    }
    else if(month==9){
        day=31+two+31+30+31+30+31+31+date;
    }
    else if(month==10){
        day=31+two+31+30+31+30+31+31+30+date;
    }
    else if(month==11){
        day=31+two+31+30+31+30+31+31+30+31+date;
    }
    else if(month==12){
        day=31+two+31+30+31+30+31+31+30+31+30+date;
    }
    else{

    }
    dayinp.value=day;
}

</script>
</html>